/**
 * <h3>ThemeMapper</h3>
 * <p> 大赛信息数据访问层接口 </p>
 *
 * <h3>功能描述</h3>
 * <p> 定义对数据库表 theme_competition 的基本操作方法，包括增删改查 </p>
 * <p> 配合 MyBatis Plus 实现 ORM 映射与持久化操作 </p>
 *
 * <h3>元数据</h3>
 * <ul>
 *     <li> 作者：郭强 </li>
 *     <li> 创建日期：2025年05月18日 14:20:15 </li>
 * </ul>
 *
 * <h3>其他信息</h3>
 * <ul>
 *     <li> 继承自：{@link BaseMapper<ThemeDTO>} </li>
 *     <li> 示例代码：{@code List<Theme> list = themeMapper.selectThemeList(dto);} </li>
 * </ul>
 *
 * @apiNote 方法签名应与 XML 文件中的 id 保持一致，以确保正确绑定
 * @implSpec 使用泛型类型 ThemeDTO 进行实体映射
 * @since v1.0.0.0
 */
package com.dnndo.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dnndo.system.domain.Theme;
import com.dnndo.system.domain.dto.ThemeDTO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 大赛数据访问层接口
 */
@Mapper
public interface ThemeMapper extends BaseMapper<ThemeDTO> {

    /**
     * 查询所有或符合条件的大赛列表
     * @param dto 查询条件封装对象
     * @return List<Theme> 符合条件的大赛信息列表
     */
    List<Theme> selectThemeList(ThemeDTO dto);

    /**
     * 根据ID查询大赛信息
     * @param themeId 大赛唯一标识符
     * @return ThemeDTO 大赛信息
     */
    ThemeDTO selectThemeListById(Long themeId);

    /**
     * 新增大赛信息
     * @param dto 封装新增数据的DTO对象
     * @return int 受影响的记录数
     */
    int insertTheme(ThemeDTO dto);

    /**
     * 修改大赛信息
     * @param dto 封装更新数据的DTO对象
     * @return int 受影响的记录数
     */
    int updateThemeById(ThemeDTO dto);

    /**
     * 删除大赛信息
     * @param themeId 大赛ID
     * @return int 受影响的记录数
     */
    int deleteThemeById(Integer themeId);
}
